#include "ttaskqueue.h"
#include "tlogger.h"
namespace tlib
{
	TTaskQueue::TTaskQueue()
	{

	}

	TTaskQueue::~TTaskQueue()
	{

	}

	TTask TTaskQueue::Pop()
	{
		TAutoLock lock(&m_mutex);
		while (m_tasks.empty())
		{
			m_bNotEmpty.Wait(&m_mutex);
		}
		TTask task;
		if (!m_tasks.empty())
		{
			task = m_tasks.front();
			m_tasks.pop_front();
		}
		return task;
	}

	void TTaskQueue::Push(TTask tk)
	{
		TAutoLock lock(&m_mutex);
		m_tasks.push_back(tk);
		m_bNotEmpty.Notify();
	}
}



